前端analysis | What,Why,Who,When,Where,How

《Linux》- shell for循环

2020-09-08

for 循环结构

1
2
3
4
for i [in { }] # 范围
do
循环执行logic
done

循环输出用户输入

1
2
3
4
5
6
7
8
# 默认去 $@,取所有位置变量值
for i
do
echo $i
done

$ ./for_test.sh 1,2,3,3,000,233
1,2,3,3,000,233

自动生成序列

{0..10}、{a..z} 、{1..100..2}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ echo {0..10}
0 1 2 3 4 5 6 7 8 9 10

$ echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z

#此命令mac os系统不支持,直接原文输出
$ echo {1..10..2}
1 3 5 7 9

#直接原文输出,不会生成序列,
$ i=10
$ echo {1..$i}
$ {1..10}

seq

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 默认\n连接输出,通过-s修改,支持上文中的变量,不必用echo
$ i=5
$ seq 1 $i
1
2
3
4
5

$ seq -s '' 1 $i
12345678910

#指定步长,mac 输出后,会添加| ;linux不添加|
$ seq -s '|' 2 2 10
2|4|6|8|10|

#不指定起始位置
$ seq -s '|' 9
1|2|3|4|5|6|7|8|9

闰年判定

1
2
3
4
5
6
7
8
9
#!/bin/bash
for i in {1990..2200}
do
if [[ $[i%4] -eq 0 && $[i%100] -ne 0 || $[i%400] -eq 0 ]];then
echo "$i:是闰年"
else
echo "$i:不是闰年"
fi
done
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏